package com.mycompany.inventory.pojo;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

public class Customer {
	
	private String Id;
	private String name;
	private Integer balance;
	private String remark;
	Integer discount;
	private Address address = new Address();
	private List<Address> addresses = new ArrayList<Address>();
	private Contact contact = new Contact();
	private List<CustomInfo> customs = new ArrayList<CustomInfo>();
	private PriceCurrency price;
	private PaymentTerm paymentTerm;
	private TaxScheme taxingScheme;
	private Integer taxexempt;
	private PaymentMethod paymentMethod;
	private Carrier carrier;
	private Inventory inventory;
	private CreditCard creditCard = new CreditCard();
	private Date origin;
	private String source;
	public Customer() {
		
	}
	
	public Customer(String id, String name, Integer balance, String remark, Integer discount, List<Address> addresses,
			Contact contact, PriceCurrency price,PaymentTerm paymentTerm, 
			TaxScheme taxingScheme, Integer tax, PaymentMethod paymentMethod, Carrier carrier, Inventory inventory, CreditCard creditCard, Date origin, String source, List<CustomInfo> customs) {
		this.Id = id;
		this.name = name;
		this.balance = balance;
		this.remark = remark;
		this.discount = discount;
		this.addresses = addresses;
		if(this.addresses!=null && this.addresses.size() > 0)
			this.address = this.addresses.get(0);
		this.contact = contact;
		this.price = price;
		this.paymentTerm = paymentTerm;
		this.taxingScheme = taxingScheme;
		this.taxexempt= tax;
		this.paymentMethod = paymentMethod;
		this.carrier = carrier;
		this.inventory = inventory;
		this.creditCard = creditCard;
		this.origin = origin;
		this.source = source;
		this.customs = customs;
	}

	public Customer(String id, PaymentMethod paymentMethod, Carrier carrier, Inventory inventory, CreditCard creditCard, Date origin, String source) {
		this.Id = id;
		this.paymentMethod = paymentMethod;
		this.carrier = carrier;
		this.inventory = inventory;
		this.creditCard = creditCard;
		this.origin = origin;
		this.source = source;
	}	
	
	public String getId() {
		return Id;
	}

	public void setId(String id) {
		Id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @return the discount
	 */
	public Integer getDiscount() {
		return discount;
	}

	/**
	 * @param discount the discount to set
	 */
	public void setDiscount(Integer discount) {
		this.discount = discount;
	}

	/**
	 * @return the price
	 */
	public PriceCurrency getPrice() {
		return price;
	}

	/**
	 * @param price the price to set
	 */
	public void setPrice(PriceCurrency price) {
		this.price = price;
	}

	/**
	 * @return the taxexempt
	 */
	public Integer getTaxexempt() {
		return taxexempt;
	}

	/**
	 * @return the creditCard
	 */
	public CreditCard getCreditCard() {
		return creditCard;
	}

	/**
	 * @param creditCard the creditCard to set
	 */
	public void setCreditCard(CreditCard creditCard) {
		this.creditCard = creditCard;
	}

	/**
	 * @param taxexempt the taxexempt to set
	 */
	public void setTaxexempt(Integer taxexempt) {
		this.taxexempt = taxexempt;
	}

	/**
	 * @return the paymentMethod
	 */
	public PaymentMethod getPaymentMethod() {
		return paymentMethod;
	}

	/**
	 * @param paymentMethod the paymentMethod to set
	 */
	public void setPaymentMethod(PaymentMethod paymentMethod) {
		this.paymentMethod = paymentMethod;
	}

	/**
	 * @return the inventory
	 */
	public Inventory getInventory() {
		return inventory;
	}

	/**
	 * @param inventory the inventory to set
	 */
	public void setInventory(Inventory inventory) {
		this.inventory = inventory;
	}

	public List<Address> getAddresses() {
		return addresses;
	}

	public void setAddresses(List<Address> addresses) {
		this.addresses = addresses;
	}
	
	public Address getAddress() {
		return address;
	}

	public void setAddress(Address address) {
		this.address = address;
	}

	public Contact getContact() {
		return contact;
	}

	public void setContact(Contact contact) {
		this.contact = contact;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public PaymentTerm getPaymentTerm() {
		return paymentTerm;
	}

	public void setPaymentTerm(PaymentTerm paymentTerm) {
		this.paymentTerm = paymentTerm;
	}

	public TaxScheme getTaxingScheme() {
		return taxingScheme;
	}

	public void setTaxingScheme(TaxScheme taxingScheme) {
		this.taxingScheme = taxingScheme;
	}

	public Carrier getCarrier() {
		return carrier;
	}

	public void setCarrier(Carrier carrier) {
		this.carrier = carrier;
	}

	/**
	 * @return the customs
	 */
	public List<CustomInfo> getCustoms() {
		return customs;
	}

	/**
	 * @param customs the customs to set
	 */
	public void setCustoms(List<CustomInfo> customs) {
		this.customs = customs;
	}

	/**
	 * @return the balance
	 */
	public Integer getBalance() {
		return balance;
	}

	/**
	 * @param balance the balance to set
	 */
	public void setBalance(Integer balance) {
		this.balance = balance;
	}

	/**
	 * @return the origin
	 */
	public Date getOrigin() {
		return origin;
	}

	/**
	 * @param origin the origin to set
	 */
	public void setOrigin(Date origin) {
		this.origin = origin;
	}

	/**
	 * @return the source
	 */
	public String getSource() {
		return source;
	}

	/**
	 * @param source the source to set
	 */
	public void setSource(String source) {
		this.source = source;
	}

	public String toString(){
		return name;
	}
}